package com.zenithmind.note.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zenithmind.common.result.PageResult;
import com.zenithmind.note.pojo.dto.NoteCategoryDTO;
import com.zenithmind.note.pojo.entity.NoteCategory;
import com.zenithmind.note.pojo.query.NoteCategoryQuery;
import com.zenithmind.note.pojo.vo.NoteCategoryVO;

import java.util.List;

/**
 * 笔记分类服务接口
 */
public interface NoteCategoryService extends IService<NoteCategory> {
    
    /**
     * 创建分类
     * 
     * @param categoryDTO 分类数据
     * @return 分类ID
     */
    String createCategory(NoteCategoryDTO categoryDTO);
    
    /**
     * 更新分类
     * 
     * @param categoryDTO 分类数据
     */
    void updateCategory(NoteCategoryDTO categoryDTO);
    
    /**
     * 删除分类
     * 
     * @param id 分类ID
     */
    void deleteCategory(String id);
    
    /**
     * 获取分类详情
     * 
     * @param id 分类ID
     * @return 分类详情
     */
    NoteCategoryVO getCategoryDetail(String id);
    
    /**
     * 分页查询分类列表
     * 
     * @param query 查询条件
     * @return 分页结果
     */
    PageResult<NoteCategoryVO> categoryPage(NoteCategoryQuery query);
    
    /**
     * 获取用户的分类列表，包含笔记数量
     * 
     * @param userId 用户ID，传null表示当前登录用户
     * @return 分类列表
     */
    List<NoteCategoryVO> getUserCategories(String userId);
    
    /**
     * 获取系统预设分类列表
     * 
     * @return 系统预设分类列表
     */
    List<NoteCategoryVO> getSystemCategories();
    
    /**
     * 获取分类统计信息
     * 
     * @param userId 用户ID，传null表示当前登录用户
     * @return 分类统计信息
     */
    List<NoteCategoryVO> getCategoryStats(String userId);
} 